/*

卡点：
dfs实锤，但是我没有考虑好出发点，也就是下面代码的fa
其实做题过程中用变量pre等等尝试去解决，但也不能做到全AC，只对了两个测试样例，还莫名有10个TLE，欸....


心得：
看到榜一大佬的代码，明白什么才是简洁且富有逻辑，太完美了！

知识点一：auto关键字使用
for(int y:g[x])遍历vector不定长数组。作用等效于从begin迭代到end
不明确的话，可以直接写成for(auto y:g[x])

*/

#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>g[200005];

void dfs(int x,int fa)
{
    sort(g[x].begin(),g[x].end());
    cout << x << " ";
    for(auto y:g[x]){
        if(y!=fa){
            dfs(y,x);
            cout << x << " ";
        }
    }
}

int main()
{
    cin >> n;
    for(int i=1,x,y;i<n;i++)cin >> x >> y , g[x].push_back(y) , g[y].push_back(x);
    dfs(1,0);
    return 0;
}
